The present invention relates to methods and systems for managing complex digital assets. Computer generated animations are often generated by creating data representing objects and their associated shading, texturing, and animation rigging characteristics. The objects are assembled into one or more shots each representing a specific sequence of animation. A shot typically includes one or more objects, a camera specifying a viewpoint, and lighting. A shot also includes animation data specifying the movement or other changes over time of objects, the camera, and lighting. Data for each of these aspects of a shot is a digital asset that can stored in one or more files.
A renderer or other software program processes the digital assets defining shots, cameras, lighting, animation, objects, shading, texturing, animation rigging, animation data, and any other associated data, such as simulation data, to create one or more computer generated images or animated sequences. Many renderers create computer generated images and animations by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time.
Digital assets have complex dependencies with each other. For example, the geometric features of a character model can be specified by a geometry data file. The texturing and shading attributes of the character model can be specified by one or more texture and shading program and data files. To render the character model correctly, the renderer must combine the data from these separate files. Additionally, digital assets can have complex dependencies with software applications. For example, a character model can use a modeling application to create and manipulate its geometry data, a texturing and shading application to manipulate texturing and shading programs and data, and an animation rigging application to create animation rigging, which translates animation data, referred to as animation variables, into changes in the geometry and other aspects of a character model.
The relationships between digital assets is further complicated in that digital assets and their associated software applications evolve over the course of a production. As digital assets and software tools evolve, older dependencies may be broken. For example, a character model can use a first version of geometry data and a first version of texturing data. Some portions of the animated feature may be created using the first versions of the geometry and texturing data. As the production continues, a new texturing software application may be used to create a second version of the texturing data, for example to refine attributes of the character model. It may be possible for new shots of the animated feature to freely use the new texturing data with the first version of the geometry data; however, previously completed shots should continue to use the first version of the texturing data to avoid the possibility of the new texturing data altering or even ruining the previously completed shots.
As digital assets and their associated software applications evolve, the potential for introducing incompatibilities increases dramatically. For large productions, there may be animators working with one version of a digital asset while technical staff are creating a revised version of a digital asset. Furthermore, previously completed portions of the production may require the use of older versions of the digital asset. If the wrong version of a digital asset is used, a visual discontinuity, or a “pop,” can be introduced if the new object looks different from the old one in the various scenes. Alternatively, the inclusion of a new version of an object in an older scene may cause the renderer to terminate with an error. Even worse, during the time which one frame takes to render, it is possible for different users to install new versions of one or more assets (e.g. objects to be rendered) referenced in the frame. As a result, errors and visual discontinuities can occur within a single shot. Furthermore, it is very common for images or shots to need to be re-worked after being approved to make them ready for “film-out.” However, if versions of the assets that were used in older shots have been updated, it is extremely difficult to re-render or replicate exactly the same images.
Tracking the dependencies between digital assets, software tools, and associated portions of the production is an arduous task. Previously, these dependencies were maintained manually using source-code and document control software applications. Users were required to check files in and out of predefined packages or collections. Each package or collection contained a compatible set of digital assets that could be referenced together. In this prior system, only relatively simple types of dependencies, such as “asset is a member of a group,” can be represented.
In these prior systems, dependencies between digital assets and specific versions of software tools, dependencies between digital assets and shots, and multiple types of dependency relationships for each digital asset are difficult if not impossible to represent with this system. Furthermore, this system is error prone, relying upon users to select the correct package or collection. Additionally, it is difficult to track the complete state of a set of dependent assets, to track changes in sets of dependent assets, and to debug dependency problems.
It is therefore desirable for a system and method to enable the creation and maintenance of complex dependency relationships between digital assets and associated software tools. It is further desirable for the system and method to allow any number of dependency relationships between any number of digital assets and associated software tools in arbitrary locations. It is also desirable for the system and method to be readily adaptable to a wide variety of types of digital assets and software tool applications. It is further desirable for the system and method to enable a set of multiple digital assets to be automatically accessed as a single aggregate asset according to its associated dependency relationships. It is also desirable for the system and method to support multiple versions of digital assets and aggregate assets. It is further desirable for the system and method to facilitate access to different versions of digital assets and aggregate assets, and where necessary maintain dependencies with specific versions of digital assets for compatibility. It is desirable for the system and method to enable the analysis of the complete state of a set of dependent assets, to enable the tracking of changes in sets of dependent assets, and to enable the debugging of dependency problems.